package org.vectrics.recruiter.job;

import java.io.Serializable;
import java.util.Date;

import org.vectrics.common.db.Expirable;
import org.vectrics.common.db.RecordObject;
import org.vectrics.common.db.Voidable;
import org.vectrics.user.Person;


/**
 * @author mmoore
 */
public class JobCandidateStatus implements RecordObject, Voidable, Expirable, Serializable {
    private Long id = null;
    private Date startDate = null;
    private Date endDate = null;
    private boolean voided = false;
    private JobCandidateStatusType statusType = null;
    private Person person = null;
    private JobCandidate jobCandidate = null;
    private JobCandidateStatusReasonType jobCandidateStatusReasonType = null;
    
    /**
     * @return Returns the id.
     */
    public Long getId() {
        return id;
    }
    /**
     * @param id The id to set.
     */
    public void setId(Long id) {
        this.id = id;
    }
    /**
     * @return Returns the statusType.
     */
    public JobCandidateStatusType getStatusType() {
        return statusType;
    }
    /**
     * @param statusType The statusType to set.
     */
    public void setStatusType(JobCandidateStatusType statusType) {
        this.statusType = statusType;
    }
    /**
     * @return Returns the voided.
     */
    public boolean getVoided() {
        return voided;
    }
    /**
     * @param voided The voided to set.
     */
    public void setVoided(boolean voided) {
        this.voided = voided;
    }
    /**
     * @return Returns the endDate.
     */
    public Date getDateEnd() {
        return endDate;
    }
    /**
     * @param endDate The endDate to set.
     */
    public void setDateEnd(Date endDate) {
        this.endDate = endDate;
    }
    /**
     * @return Returns the startDate.
     */
    public Date getDateStart() {
        return startDate;
    }
    /**
     * @param startDate The startDate to set.
     */
    public void setDateStart(Date startDate) {
        this.startDate = startDate;
    }
	/**
	 * @return Returns the person.
	 */
	public Person getPerson() {
		return person;
	}
	/**
	 * @param person The person to set.
	 */
	public void setPerson(Person person) {
		this.person = person;
	}    
    
	/**
	 * @return Returns the jobCandidate.
	 */
	public JobCandidate getJobCandidate() {
		return jobCandidate;
	}
	/**
	 * @param jobCandidate The jobCandidate to set.
	 */
	public void setJobCandidate(JobCandidate jobCandidate) {
		this.jobCandidate = jobCandidate;
	}

	/**
	 * @return Returns the jobCandidateStatusReasonType.
	 */
	public JobCandidateStatusReasonType getJobCandidateStatusReasonType() {
		return jobCandidateStatusReasonType;
	}
	/**
	 * @param jobCandidateStatusReasonType The jobCandidateStatusReasonType to set.
	 */
	public void setJobCandidateStatusReasonType(
			JobCandidateStatusReasonType jobCandidateStatusReasonType) {
		this.jobCandidateStatusReasonType = jobCandidateStatusReasonType;
	}
	
	public String toString() {
		return("status{" +
				this.getId() + "|" +
				this.statusType + "|start" + this.startDate 
				+ "|end=" + this.endDate + "|reason=" + this.jobCandidateStatusReasonType + "}");
	}
}
